package caj.springboot.service;

import caj.springboot.model.dto.log.LogInsertDTO;
import caj.springboot.model.dto.log.LogSearchDTO;
import caj.springboot.model.dto.log.LogUpdateDTO;
import caj.springboot.model.vo.LogVO;
import com.baomidou.mybatisplus.core.metadata.IPage;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * @description: log实现类接口（由于该log对象只是一个示例，实际情况日志不会有修改操作）
 * @author: CAJ
 * @time: 2023/12/8 11:41
 */
public interface LogService {

    /**
     * 返回所有的日志，用来测试数据库连接是否成功
     * @return 日志列表
     */
    List<LogVO> getLogList();

    /**
     * 分页获取log列表
     *
     * @param dto 搜索参数
     * @return log的对象数据
     */
    IPage<LogVO> getLogPage(@Valid @NotNull(message = "参数不能为空") LogSearchDTO dto);

    /**
     * 插入Log数据
     *
     * @param dto log数据
     * @return 是否成功
     */
    boolean insertLog(@Valid @NotNull(message = "参数不能为空") LogInsertDTO dto);

    /**
     * 修改log数据
     *
     * @param dto 更改后的数据
     * @return 是否成功
     */
    boolean updateLogById(@Valid @NotNull(message = "参数不能为空") LogUpdateDTO dto);

    /**
     * 通过id删除log数据
     *
     * @param id log的id
     * @return 是否成功
     */
    boolean deleteLogById(@NotNull(message = "id不能为空") Long id);

    /**
     * 工具函数：检查排序顺序是否有效
     * @param order 传入的排序方式
     * @return 是否是ASC
     */
    boolean isAsc(String order);

}
